package movilmax.sia_corp.action;

import java.util.LinkedList;
import java.util.Map;
import utilidades.Cadena;
//import movilmax.sia_corp.model.ReferenciasProspectos;
import movilmax.sia_corp.model.RpErrores;
import movilmax.sia_corp.model.Prospecto;
import apli.conectar.Conectar;
import basedatos.Fecha;
import basedatos.Resultado;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import movilmax.sia_corp.model.Usuario;

public class RegistroProspecto extends ActionSupport{
	private static final long serialVersionUID = 1L;

	private RpErrores errores;
	private Prospecto prospecto;
	private Conectar BASE;
	private String SQL;
	private Fecha fecha;
	private String dia;
	private String hora;
	private String srvac;
	private String codigo;
	private String codigo_sucursal;
	//private ReferenciasProspectos ref_aux;
	//private LinkedList<ReferenciasProspectos> list= new LinkedList<ReferenciasProspectos>();
	
	
	@SuppressWarnings("rawtypes")
	public String insertarProspecto() throws Exception 
	{
		Map session = ActionContext.getContext().getSession();
		Usuario USUARIO = (Usuario)session.get("ses_usuario");
		
		try 
		{
			Resultado RCS= new Resultado();
			SQL="";

			fecha= new Fecha();
			dia= fecha.getFecha();
			hora=fecha.getHoras();
			errores=new RpErrores();
			
			if(USUARIO == null)
			{
				errores.setMsgok("OK");
				errores.setMsg("La sesion del usuario ha caducado");
				return ERROR;
			}
						
			if (prospecto.getTipo_doc().contains(", ")) 
			{
				String[] Tipo = prospecto.getTipo_doc().split(", ");
				
				prospecto.setTipo(Tipo[0]);
				prospecto.setTipo_doc(Tipo[1]);
				
				SOP("Centinela: El tipo de documentacion sigue presentando contaminacion, aun esta pendiente el TODO (1)");
			}
			else 
			{
				SOP("El tipo de documentacion no se encuentra contaminado. Se puede eliminar la validacion del TODO (1)");
			}			
			
			String DOC_ID=prospecto.getTipo_doc()+prospecto.getIdentificacion();

			
			SOP("DOC_ID: "+DOC_ID);
			SQL="Select codigo,status from prospectos where identificacion='"+DOC_ID+"' ";
			BASE= new Conectar();
			
			if(!BASE.getMsg().equals("SI"))
			{
				errores.setMsgok("OK");
				errores.setMsg("No hay conexion al servidor de base de datos");
				return ERROR;
			}
			
			RCS = BASE.getBaseDatos().consultar(SQL);
			
			boolean insertar=true;
			
			if(RCS.RP)
			{
				//Actualizacion
				codigo=RCS.getCadena("codigo");	
				prospecto.setCodigo(codigo);
				insertar=false;
			}
			else
			{
				//Registro
				insertar=true;
			}
			
			String ape="",nombres="";

			
			if( prospecto.getApellidos()==null ) //Yo pienso que esta condicion se puede borrar porque el prospecto ya viene por defecto vacio
			{
				prospecto.setApellidos("");
			}
			else
			{
				 ape=prospecto.getApellidos(); 
			}
			
			if( prospecto.getNombres()==null )
			{
				nombres="";
				prospecto.setNombres("");
		    }
			else
			{
				 nombres=prospecto.getNombres(); 
			}	
			
			prospecto.setEmail("@") ;//Esto lo vamos a arreglar por un
			prospecto.setTipo(prospecto.getTipo().toUpperCase());			
			
			SOP("Centinela: prospecto.getTipo()= "+prospecto.getTipo());

			if(insertar)
			{
				//Municipio libertador tiene codigo 22
				codigo=BASE.getBaseDatos().generarCodigo("prospectos", "codigo");
//				SQL= "INSERT INTO prospectos VALUES ('"+codigo+"',"
//				+"'"+DOC_ID+"',"
//				+"'"+prospecto.getNombres()+"',"
//				+"'"+prospecto.getApellidos()+"',"
//				+"'"+prospecto.getTipo()+"',"
//				+"'"+prospecto.getStatus()+"',"
//				+"'"+prospecto.getIdentificacion()+"',"
//				+"'"+prospecto.getTipo_doc()+"',"
//				+"'*',"
//				+"'*',"
//				+"'*',"
//				+"'*',"
//				+"'*',"
//				+"'22',"
//				+"'correo@correo.com',"
//				+"'M',"
//				+"'"+dia+"',"
//				+"'"+dia+"',"
//				+"'"+USUARIO.getUsuario()+"',"  
//				+"'http',"
//				+"'"+hora+"',"
//				+"'*',"
//				+"'*',"
//				+"'1',"
//				+"'*',"
//				+"'*',"
//				+"'*',"
//				+"'*',"
//				+"'*',"
//				+"NULL,"
//				+"'0',"
//				+"NULL,"
//				+"'*',"
//				+"NULL,"
//				+"'NINGUNA');";
			
				SQL= "INSERT INTO prospectos VALUES ('"+codigo+"',"
				+"'"+DOC_ID+"',"
				+"'"+prospecto.getNombres()+"',"
				+"'"+prospecto.getApellidos()+"',"
				+"'"+prospecto.getTipo()+"',"
				+"'"+prospecto.getStatus()+"',"
				+"'"+prospecto.getIdentificacion()+"',"
				+"'"+prospecto.getTipo_doc()+"',"
				+"'-',"
				+"'*',"
				+"'*',"
				+"'*',"
				+"'*',"
				+"'22',"
				+"'sincorreo@correo.com',"
				+"'M',"
				+"'"+dia+"',"
				+"'"+dia+"',"
				+"'"+USUARIO.getUsuario()+"',"  
				+"'http',"
				+"'"+hora+"',"
				+"'*',"
				+"'*',"
				+"'1',"
				+"'*',"
				+"'*',"
				+"'*',"
				+"'*',"
				+"'*',"
				+"NULL,"
				+"'0',"
				+"NULL,"
				+"'*',"
				+"NULL,"
				+"'NINGUNA');";				
				
			}
			else
			{
				SQL= "UPDATE prospectos SET status='POR ASIGNAR',tipo='"+prospecto.getTipo()+"',servicio_actual='1',fecha_act='"+dia+"',hora_act='"+hora+"' Where codigo='"+codigo+"' ";
			}
			
			SOP("Centinela: El valor del tipo de documento del prospecto es "+prospecto.getTipo_doc());
			SOP("Centinela: El valor del SQL a INSERTAR es "+SQL);
			
			if (BASE.getBaseDatos().ejecutar(SQL))
			{
				SOP("Centinela: Se realizo la insercion del prospecto correctamente");
			}
			else
			{
				SOP("Centinela: No se realizo la insercion");
				SOP("Centinela: El error que lanza la BDD es "+BASE.getMsg());
			}	
			
			BASE.getBaseDatos().ejecutar("update corp_seguimiento_actividades set procesado='1' where prospecto='"+codigo+"' ");			
			
		} catch (Exception e) {
			// TODO: handle exception
		}
		
		/*De aqui en adelante vamos a hacer el registro de las referencias*/
		
		
		Cadena C=new Cadena();	

		LinkedList lin1=C.tokens(prospecto.getReferencia().getTipo(),",");		
		LinkedList lin4=C.tokens(prospecto.getReferencia().getNombres(),",");
		LinkedList lin8=C.tokens(prospecto.getReferencia().getApellidos(),",");
		LinkedList lin5=C.tokens(prospecto.getReferencia().getTelefono(),",");
		LinkedList lin6=C.tokens(prospecto.getReferencia().getCelular(),",");
		LinkedList lin7=C.tokens(prospecto.getReferencia().getEmail(),",");
		String fnacx="01/01/1990",nv_email="aaa";
		try{
			for (int i=0; i<lin1.size(); i++)	
			{
				if(!lin1.get(i).toString().trim().equals("") && !lin4.get(i).toString().trim().equals("") && !lin7.get(i).toString().trim().equals("")  ){
					String  REFERENCIA= BASE.getBaseDatos().generarCodigo("referencias_personales","codigo");
					if(lin1.get(i).toString().trim().equals("ADMINISTRATIVO") ){
						nv_email=lin7.get(i).toString().trim();
						prospecto.setEmail(nv_email);
						prospecto.setTelefono(lin5.get(i).toString().trim());
						prospecto.setCelular(lin6.get(i).toString().trim());
						prospecto.setTel_oficina("-");
					}
					else
					{
						SQL="INSERT INTO referencias_personales(codigo,docid,tipo,razonsocial,telefono,celular,email,fecha_registro,hora_registro,usuario_registro,fnac) VALUES ('"+REFERENCIA+ "','TMP_"+REFERENCIA+"','"+lin1.get(i).toString().trim()+"','"+lin4.get(i).toString().trim()+" "+lin8.get(i).toString().trim()+"','"+lin5.get(i).toString().trim()+"','"+lin6.get(i).toString().trim()+"','"+lin7.get(i).toString().trim()+"','"+dia+"','"+hora+"','"+USUARIO.getUsuario()+"','"+fnacx+"' )";
						BASE.getBaseDatos().ejecutar(SQL);
						SQL="INSERT INTO referencias_prospectos(prospecto,referencia,sucursal) VALUES ('" +codigo+ "','"+REFERENCIA+"','"+codigo_sucursal+"' )";
						BASE.getBaseDatos().ejecutar(SQL);
					}
				}
			}
		}
		catch(Exception Errx)
		{
			 
		}		
		
		/*Hasta aqui el registro de las referencias*/
		
		return SUCCESS;
	}
	
	
	@SuppressWarnings("rawtypes")
	public String insertar() throws Exception 
	{

		try
		{
		boolean otro;
		Resultado RCS= new Resultado();
		SQL="";
		fecha= new Fecha();
		dia= fecha.getFecha();
		hora=fecha.getHoras();
		Map session = ActionContext.getContext().getSession();
		Usuario USUARIO = (Usuario)session.get("ses_usuario");
		errores=new RpErrores();
		if(USUARIO == null)
		{
			errores.setMsgok("OK");
			errores.setMsg("La sesion del usuario ha caducado");
			return ERROR;
		}
		
		String DOC_ID=prospecto.getTipo_doc()+prospecto.getIdentificacion();
		
		SQL="Select codigo,status from prospectos where identificacion='"+DOC_ID+"' ";
		
		BASE= new Conectar();
		if(!BASE.getMsg().equals("SI")){
			errores.setMsgok("OK");
			errores.setMsg("No hay conexion al servidor de base de datos");
			return ERROR;
		}
		RCS = BASE.getBaseDatos().consultar(SQL);
		boolean insertar=true;
		if(RCS.RP)
		{
			codigo=RCS.getCadena("codigo");	
			insertar=false;
		}
		else
		{
			//insert de prospecto
			insertar=true;
		}

		//hasta aqui
			prospecto.setCodigo(codigo);

			String ape="",nombres="";
			if( prospecto.getApellidos()==null ){
				ape="";
				prospecto.setApellidos("");
			}else{
				 ape=prospecto.getApellidos(); 
			}	
			if( ape.equals("null") ){
				ape="";
				prospecto.setApellidos("");
			}
			if( prospecto.getNombres()==null ){
				nombres="";
				prospecto.setNombres("");
		    }else{
				 nombres=prospecto.getNombres(); 
			}	
			if( nombres.equals("null") ){
				nombres=""; 
				prospecto.setNombres("");
			 }
			
			prospecto.setEmail("'@'") ;
			prospecto.setTipo(prospecto.getTipo().toUpperCase());
			
			
			if(insertar){
				codigo=BASE.getBaseDatos().generarCodigo("prospectos", "codigo");
				SQL= "INSERT INTO prospectos (codigo,nombres,apellidos,docid,tipodoc,telefono,celular,zona, "+
				" ciudad,tipoinmueble,municipio,email,sexo,fnacimiento,status,fecha_registro, "+
				" usuario_registro,identificacion,paginaweb,hora_registro,fax,telefono_oficina,  "+
				" servicio_actual,tipo,avcalle,des_inmuemble,nro_inmueble,piso_inmueble )  "+
				" VALUES('"+codigo+"','"+nombres+"','"+ape+"','"+prospecto.getIdentificacion()+"','"+prospecto.getTipo_doc()+"','***' ,'***' ,'"+prospecto.getZona()+"' ,'"+prospecto.getCiudad()+"' ,'"+prospecto.getTipoinmueble()+"' ,'"+prospecto.getMUNICIPIO().getCod()+"' ,'****' ,'"+prospecto.getSexo()+"' ,'"+dia+"' ,'POR ASIGNAR' ,'"+dia+"' ,'"+USUARIO.getUsuario()+"' ,'"+DOC_ID+"' ,'http' ,'"+hora+"' ,'***' ,'***' ,'"+srvac+"' ,'"+prospecto.getTipo().toUpperCase() +"' ,'"+prospecto.getDireccion()+"' ,'"+prospecto.getNombreinmue()+"' ,'"+prospecto.getNumeroinmue()+"' ,'"+prospecto.getPisoinmue()+"' )";
			}else{
				SQL= "UPDATE prospectos SET status='POR ASIGNAR',tipo='"+prospecto.getTipo()+"',servicio_actual='1',fecha_act='"+dia+"',hora_act='"+hora+"' Where codigo='"+codigo+"' ";
			}
		BASE.getBaseDatos().ejecutar(SQL);
			
		BASE.getBaseDatos().ejecutar("update corp_seguimiento_actividades set procesado='1' where prospecto='"+codigo+"' ");	
		
		
		//No hay interfaz de cambio que permita esto
		if(insertar)
		{
				if(srvac.equals("1")){
						//en caso de seleccionar motivo de cambio='otro'
					if(prospecto.getSrvActual().getMotivo().equals("-2")){
						otro=BASE.getBaseDatos().existeDato("motivos_cambio", "descripcion", prospecto.getSrvActual().getOtro_motivo_cambio());
						if(otro==false){
							String cod_otro_motivo=BASE.getBaseDatos().generarCodigo("motivos_cambio", "cod");
							SQL="INSERT INTO motivos_cambio (cod, descripcion, mostrar) VALUES ('"+cod_otro_motivo+"','"+prospecto.getSrvActual().getOtro_motivo_cambio().toUpperCase()+"','1')";
							//System.out.println("MOTIVO DE CAMBIO: "+SQL);
							BASE.getBaseDatos().ejecutar(SQL);
							 prospecto.getSrvActual().setMotivo(cod_otro_motivo);
						}else{
							SQL="select cod from motivos_cambio where descripcion='"+prospecto.getSrvActual().getOtro_motivo_cambio().toUpperCase()+"'";
							Resultado RCS_D=BASE.getBaseDatos().consultar(SQL);
							if(RCS_D.RP){
								prospecto.getSrvActual().setMotivo(RCS_D.getCadena("cod"));
							}
							
						}
					}
					//en caso de seleccionar proveedor='otro'
					if(prospecto.getSrvActual().getProveedor().equals("-2")){
						otro=BASE.getBaseDatos().existeDato("proveedor_servicios", "descripcion",   prospecto.getSrvActual().getOtro_proveedor() );
						if(otro==false ){
							String cod_otro_proveedor;
							cod_otro_proveedor=BASE.getBaseDatos().generarCodigo("proveedor_servicios", "cod");
							SQL="INSERT INTO proveedor_servicios (cod, descripcion, mostrar) VALUES ('"+cod_otro_proveedor+"','"+prospecto.getSrvActual().getOtro_proveedor().toUpperCase()+"','1')";
							BASE.getBaseDatos().ejecutar(SQL);
							prospecto.getSrvActual().setProveedor(cod_otro_proveedor);
						}else{
							SQL="select cod from proveedor_servicios where descripcion='"+prospecto.getSrvActual().getOtro_motivo_cambio().toUpperCase()+"'";
							Resultado RCS_D=BASE.getBaseDatos().consultar(SQL);
							if(RCS_D.RP){
								prospecto.getSrvActual().setProveedor(RCS_D.getCadena("cod"));
							}
						}
					}
					/********************************************************************************/
					String SQL_veli_ac=" select * from velocidades_disponibles where cod='"+prospecto.getSrvActual().getVel_i()+"' ";
					  Resultado RCS_DX=BASE.getBaseDatos().consultar(SQL_veli_ac);
					  String SrvAcVelInter=RCS_DX.getCadena("descripcion");
					 // prospecto.getSrvActual().setServ_i(RCS_DX.getCadena("descripcion"));
					  
					String SQL_veld_ac=" select * from velocidades_disponibles where cod='"+prospecto.getSrvActual().getVel_d()+"' ";
					  RCS_DX=BASE.getBaseDatos().consultar(SQL_veld_ac);
					  String SrvAcVelDatos=RCS_DX.getCadena("descripcion");
					  //prospecto.getSrvActual().setServ_d(RCS_DX.getCadena("descripcion"));
					if(prospecto.getCosto_actual().length()==0 )
						prospecto.setCosto_actual("0");
					  /********************************************************************************/
					SQL= "INSERT INTO detalle_serv_actual ( costo,motivo,proveedor,serv_i,vel_i ,  serv_d ,  vel_d , obs, prospecto  ) "
					+"VALUES ('"+ prospecto.getCosto_actual() +"','"+prospecto.getSrvActual().getMotivo()+"', '"+prospecto.getSrvActual().getProveedor()+"' , '"+prospecto.getSrvActual().getServ_i()+"', '"+SrvAcVelInter+"', '"+prospecto.getSrvActual().getServ_d()+"', '"+SrvAcVelDatos+"','"+ prospecto.getSrvActual().getObservaciones() +"','"+codigo+"' )";
					
					BASE.getBaseDatos().ejecutar(SQL);
				}
		}else{
			SQL= "UPDATE detalle_serv_actual SET proveedor='16' where prospecto='"+codigo+"'  ";
				BASE.getBaseDatos().ejecutar(SQL);
		}
			
		//insert detalle_servicio_solicitado
		if(prospecto.getPresupuesto().length()==0 || prospecto.getPresupuesto().equals("") ){
			prospecto.setPresupuesto("0");
		}
		
		/********************************************************************************/
		String SQL_veli_so=" select * from velocidades_disponibles where cod='"+prospecto.getSrvSolicitado().getVel_i()+"'  ";
		 Resultado RCS_DX=BASE.getBaseDatos().consultar(SQL_veli_so);
		 String SrvSolVelInter=RCS_DX.getCadena("descripcion");
		 // prospecto.getSrvSolicitado().setServ_i(RCS_DX.getCadena("descripcion"));
		  
		String SQL_veld_so=" select * from velocidades_disponibles where cod='"+prospecto.getSrvSolicitado().getVel_d()+"'  ";
		  RCS_DX=BASE.getBaseDatos().consultar(SQL_veld_so);
		  String SrvSolVelDatos=RCS_DX.getCadena("descripcion");
		  //prospecto.getSrvSolicitado().setServ_d(RCS_DX.getCadena("descripcion"));
		
		  /********************************************************************************/
	
		if(insertar){
			 SQL= "INSERT INTO  detalle_serv_solicitado ( prospecto,  fuente,  serv_i,  vel_i,  serv_d,  vel_d,  observaciones,  sin_cobertura, presupuesto, dispositivo)"
				+" VALUES ('"+codigo+"', '"+prospecto.getSrvSolicitado().getFuente()+"', '"+prospecto.getSrvSolicitado().getServ_i()+"', '"+SrvSolVelInter+"', '"+prospecto.getSrvSolicitado().getServ_d()+"', '"+SrvSolVelDatos+"', '"+prospecto.getSrvSolicitado().getObservaciones()+"', '0','"+prospecto.getPresupuesto()+"', '"+prospecto.getSrvSolicitado().getDispositivo()+"' )";
		}else{
			SQL= "UPDATE detalle_serv_solicitado SET fuente='"+prospecto.getSrvSolicitado().getFuente()+"',serv_i='"+prospecto.getSrvSolicitado().getServ_i()+"',vel_i='"+SrvSolVelInter+"',serv_d='"+prospecto.getSrvSolicitado().getServ_d()+"',vel_d='"+SrvSolVelDatos+"',observaciones='"+prospecto.getSrvSolicitado().getObservaciones()+"',presupuesto='"+prospecto.getPresupuesto()+"',dispositivo='"+prospecto.getSrvSolicitado().getDispositivo()+"' "
				+" Where prospecto='"+codigo+"'  ";
		}
		BASE.getBaseDatos().ejecutar(SQL);
		//insert sucursal
		
		String des_suc="";
		if(insertar){
			des_suc="SEDE PRINCIPAL";
		}else{
			RCS = BASE.getBaseDatos().consultar("select count(*) as tt from corp_sucursales where prospecto='"+codigo+"' ");
			if(RCS.RP){
				if(RCS.getInt("tt")==0 ){
					des_suc="SEDE PRINCIPAL";
				}else{
					des_suc="SUCURSAL ("+ RCS.getInt("tt") +" )";
				}
			}else{
				des_suc="SEDE PRINCIPAL";
			}
		}
		codigo_sucursal=BASE.getBaseDatos().generarCodigo("corp_sucursales", "cod");
		SQL="INSERT INTO corp_sucursales(cod, prospecto, telefono, celular, telefono_oficina, zona, ciudad, municipio, fax, avcalle, tipoinmueble, des_inmuemble, nro_inmueble, piso_inmueble, descripcion, fecha_registro, hora_registro, usuario_registro) VALUES ('"+codigo_sucursal+"', '"+codigo+"', '***', '***', '***', '"+prospecto.getZona()+"', '"+prospecto.getCiudad()+"','"+prospecto.getMUNICIPIO().getCod()+"', '***', '"+prospecto.getDireccion()+"', '"+prospecto.getTipoinmueble()+"', '"+prospecto.getNombreinmue()+"', '"+prospecto.getNumeroinmue()+"', '"+prospecto.getPisoinmue()+"','"+des_suc+"', '"+dia+"','"+hora+"', '"+USUARIO.getUsuario()+"') ";
		BASE.getBaseDatos().ejecutar(SQL);
		//insert referencias
		//ref_aux= new ReferenciasProspectos();
		Cadena C=new Cadena();	

		LinkedList lin1=C.tokens(prospecto.getReferencia().getTipo(),",");		
		LinkedList lin4=C.tokens(prospecto.getReferencia().getNombres(),",");
		LinkedList lin8=C.tokens(prospecto.getReferencia().getApellidos(),",");
		LinkedList lin5=C.tokens(prospecto.getReferencia().getTelefono(),",");
		LinkedList lin6=C.tokens(prospecto.getReferencia().getCelular(),",");
		LinkedList lin7=C.tokens(prospecto.getReferencia().getEmail(),",");
		String fnacx="01/01/1990",nv_email="aaa";
		try{
			for (int i=0; i<lin1.size(); i++){
				if(!lin1.get(i).toString().trim().equals("") && !lin4.get(i).toString().trim().equals("") && !lin7.get(i).toString().trim().equals("")  ){
					String  REFERENCIA= BASE.getBaseDatos().generarCodigo("referencias_personales","codigo");
				    if(lin1.get(i).toString().trim().equals("ADMINISTRATIVO") ){
						nv_email=lin7.get(i).toString().trim();
						prospecto.setEmail(nv_email);
						prospecto.setTelefono(lin5.get(i).toString().trim());
						prospecto.setCelular(lin6.get(i).toString().trim());
						prospecto.setTel_oficina("-");
					}else{
						SQL="INSERT INTO referencias_personales(codigo,docid,tipo,razonsocial,telefono,celular,email,fecha_registro,hora_registro,usuario_registro,fnac) VALUES ('"+REFERENCIA+ "','TMP_"+REFERENCIA+"','"+lin1.get(i).toString().trim()+"','"+lin4.get(i).toString().trim()+" "+lin8.get(i).toString().trim()+"','"+lin5.get(i).toString().trim()+"','"+lin6.get(i).toString().trim()+"','"+lin7.get(i).toString().trim()+"','"+dia+"','"+hora+"','"+USUARIO.getUsuario()+"','"+fnacx+"' )";
						BASE.getBaseDatos().ejecutar(SQL);
						SQL="INSERT INTO referencias_prospectos(prospecto,referencia,sucursal) VALUES ('" +codigo+ "','"+REFERENCIA+"','"+codigo_sucursal+"' )";
						BASE.getBaseDatos().ejecutar(SQL);
					}
					/*
					  if(nv_email.equals("aaa") ){
						nv_email=lin7.get(i).toString().trim();
						prospecto.setEmail(nv_email);
						prospecto.setTelefono(lin5.get(i).toString().trim());
						prospecto.setCelular(lin6.get(i).toString().trim());
						prospecto.setTel_oficina("-");
				    }
					*/
				}
			}
		}catch(Exception Errx){
		     
		}
		SQL="UPDATE corp_sucursales set telefono='"+prospecto.getTelefono() +"',celular='"+prospecto.getCelular()+"' where cod='"+codigo_sucursal+"'  ";
		BASE.getBaseDatos().ejecutar(SQL);
		
		String DES_REQ="dick@movilmax.com,",MPARA="",ASIGNADO_A ="",GESTIONADO_POR="",MSG_EM="";
		boolean asigno=false;
		//String ROL_X=USUARIO.getRol().getCod();
		if( prospecto.getTipo().toLowerCase().equals("residencial") ){
			MPARA="pwimax@movilmax.com";
			ASIGNADO_A = "DEBE SER GESTIONADO POR: DEPARTAMENTO DE ATENCION AL CLIENTE (ATC) " ;
			SQL = "UPDATE prospectos set prop='sistema',status='EN PROCESO',email='"+prospecto.getEmail() +"' where codigo='" + codigo + "'";
			BASE.getBaseDatos().ejecutar(SQL);
			asigno=true;
		}else if(prospecto.getTipo().toLowerCase().equals("evento") ){
			SQL="INSERT INTO corp_seguimiento_actividades (prospecto,actividad,detalle,obs,usuario,fecha,hora) "+
			"VALUES('"+codigo+"','9','-2','REGISTRO EVENTO','"+ USUARIO.getUsuario() +"','"+dia+"','"+hora+"' )";
		    BASE.getBaseDatos().ejecutar(SQL); 
		       SQL= "Select * from vendedores where usuario='" +USUARIO.getUsuario() + "' ";
			   RCS=BASE.getBaseDatos().consultar(SQL);
			   if( RCS.RP ){
                    String cod_vendedor = RCS.getCadena("cod");
                    String supervisado_por = RCS.getCadena("supervisor");
                    ASIGNADO_A =  RCS.getCadena("descripcion");
					String SQL="INSERT INTO corp_asignaciones(prospecto,vendedor,observaciones,fecha,hora,fecha_actualizo,hora_actualizo,status) "+
			        "VALUES ('" + codigo + "','" + cod_vendedor  + "','ASIGNACION PARA EVENTO (SIA-WEB) ','" + dia + "','" + hora + "','" + dia + "','" + hora + "','EN PROCESO' )";
					BASE.getBaseDatos().ejecutar(SQL);
					MPARA=USUARIO.getEmail();
					SQL="UPDATE prospectos set prop='"+supervisado_por+"',status='EN PROCESO',email='"+prospecto.getEmail() +"' where codigo='" + codigo + "'  ";
					BASE.getBaseDatos().ejecutar(SQL);
					asigno=true;
					String cod_evento=BASE.getBaseDatos().generarCodigo("corp_eventos", "codigo");
					SQL="INSERT INTO corp_eventos(codigo,prospecto,vendedor,fecha,hora,status) "+
			        "VALUES ('"+ cod_evento +"','" + codigo + "','" + cod_vendedor  + "','" + dia + "','" + hora + "','REGISTRADO' )";
					BASE.getBaseDatos().ejecutar(SQL);
					
					//*********************************ENVIAR CORREO REGISTRO PROSPECTO ****************************************************************//
			        MSG_EM = "Se le ha asignado el evento codigo :"+cod_evento+" <br/>\n";
					MSG_EM = MSG_EM + "Evento registrado por : "+USUARIO.getDescripcion() +"<br/> \n";
					MSG_EM = MSG_EM + "Asignado automaticamente a: " + ASIGNADO_A + " <br/> \n";
					MSG_EM = MSG_EM + "Razon social: " + prospecto.getNombres()+" - " + prospecto.getApellidos() + " <br/>\n"; 
					MSG_EM = MSG_EM + "Telefonos: " + prospecto.getTel_oficina() + "/" + prospecto.getTelefono()  + "/" + prospecto.getCelular() +" <br/>\n";
					MSG_EM = MSG_EM + "Email: " + prospecto.getEmail() + " <br/>\n";
					MSG_EM = MSG_EM + "Solicita servicio internet : " + prospecto.getSrvSolicitado().getServ_i() + " " + SrvSolVelInter + " <br/>\n";
					if(this.getProspecto().getTipo().equalsIgnoreCase("corporativo") ){
						MSG_EM = MSG_EM + "Solicita servicio datos: " + prospecto.getSrvSolicitado().getServ_d() + " " + SrvSolVelDatos + " <br/>\n";
					}else{
						MSG_EM = MSG_EM + "Solicita dispositivo: " + prospecto.getSrvSolicitado().getDispositivo() + " <br/>\n";	
					}	
					MSG_EM = MSG_EM + "Presupuesto: " + prospecto.getPresupuesto() + " <br/>\n";
					MSG_EM = MSG_EM + "Observaciones: " + prospecto.getSrvSolicitado().getObservaciones() + " <br/>\n";

					SQL=" INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + MPARA + "','EVENTO " + prospecto.getNombres() + " REGISTRADO','" + MSG_EM + "' ) ";
					BASE.getBaseDatos().ejecutar(SQL);
			        //*************************************FIN DE ENVIO DE CORREO*********************************************************//
			   }
		}else{
			SQL="INSERT INTO corp_seguimiento_actividades (prospecto,actividad,detalle,obs,usuario,fecha,hora) "+
			"VALUES('"+codigo+"','9','-1','REGISTRO PROSPECTO','"+ USUARIO.getUsuario() +"','"+dia+"','"+hora+"' )";
		    BASE.getBaseDatos().ejecutar(SQL); 
			//if(ROL_X.equals("31") || ROL_X.equals("33") || ROL_X.equals("44") ){ 
				 if( prospecto.getTipo().toLowerCase().equals("corporativo") || prospecto.getTipo().toLowerCase().equals("pyme") ){
					   SQL= "Select * from vendedores where usuario='" +USUARIO.getUsuario() + "' ";
					   RCS=BASE.getBaseDatos().consultar(SQL);
					   if( RCS.RP ){
	                        String cod_vendedor = RCS.getCadena("cod");
	                        String supervisado_por = RCS.getCadena("supervisor");
	                        ASIGNADO_A =  RCS.getCadena("descripcion");
							String SQL="INSERT INTO corp_asignaciones(prospecto,vendedor,observaciones,fecha,hora,fecha_actualizo,hora_actualizo,status,auto) "+
					        "VALUES ('" + codigo + "','" + cod_vendedor  + "','ASIGNADO AUTOMATICAMENTE (SIA-WEB)','" + dia + "','" + hora + "','" + dia + "','" + hora + "','EN PROCESO','1' )";
							BASE.getBaseDatos().ejecutar(SQL);
							MPARA=USUARIO.getEmail();
							SQL="UPDATE prospectos set prop='"+supervisado_por+"',status='EN PROCESO',email='"+prospecto.getEmail() +"' where codigo='" + codigo + "'  ";
							BASE.getBaseDatos().ejecutar(SQL);
							asigno=true;
							//*********************************ENVIAR CORREO REGISTRO PROSPECTO ****************************************************************//
					        MSG_EM = "Se le ha asignado un prospecto "+prospecto.getTipo().toUpperCase()+" <br/>\n";
							MSG_EM = MSG_EM + "Prospecto registrado por aplicacion (SIA - WEB )<br/> \n";
							MSG_EM = MSG_EM + "Usuario asigno: APLICACION SIA-WEB <br/> \n";
							MSG_EM = MSG_EM + "Asignado automaticamente a: " + ASIGNADO_A + " <br/> \n";
							MSG_EM = MSG_EM + "Razon social: " + prospecto.getNombres()+" - " + prospecto.getApellidos() + " <br/>\n"; 
							MSG_EM = MSG_EM + "Telefonos: " + prospecto.getTel_oficina() + "/" + prospecto.getTelefono()  + "/" + prospecto.getCelular() +" <br/>\n";
							MSG_EM = MSG_EM + "Email: " + prospecto.getEmail() + " <br/>\n";
							MSG_EM = MSG_EM + "Solicita servicio internet : " + prospecto.getSrvSolicitado().getServ_i() + " " + SrvSolVelInter + " <br/>\n";
							if(this.getProspecto().getTipo().equalsIgnoreCase("corporativo") ){
								MSG_EM = MSG_EM + "Solicita servicio datos: " + prospecto.getSrvSolicitado().getServ_d() + " " + SrvSolVelDatos + " <br/>\n";
							}else{
								MSG_EM = MSG_EM + "Solicita dispositivo: " + prospecto.getSrvSolicitado().getDispositivo() + " <br/>\n";	
							}	
							MSG_EM = MSG_EM + "Presupuesto: " + prospecto.getPresupuesto() + " <br/>\n";
							MSG_EM = MSG_EM + "Observaciones: " + prospecto.getSrvSolicitado().getObservaciones() + " <br/>\n";
							SQL=" INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + MPARA + "','PROSPECTO " + prospecto.getTipo().toUpperCase() + " ASIGNADO AUTOMATICAMENTE','" + MSG_EM + "' ) ";
							BASE.getBaseDatos().ejecutar(SQL);
					        //*************************************FIN DE ENVIO DE CORREO*********************************************************//
					   }
		       //  }	
		     }
		}
		
		if(asigno == false ){
			//Colocar prospecto en cola de asignacion
			SQL = " Select usuario from usuarios where rol='33' and bloqueado='0' ";
			RCS = BASE.getBaseDatos().consultar(SQL);
			if(RCS.RP){
				/*do{
					String usu;
					usu = RCS.getCadena("usuario");
					if(this.getProspecto().getTipo().equalsIgnoreCase("corporativo") )
					   SQL = " INSERT INTO apli_cola_prospectos (usuario,cantidad,fecha,hora) VALUES ('" + usu + "','0','23/05/1984','14:00:00') ";
					else
					   SQL = " INSERT INTO apli_cola_prospectos_pyme (usuario,cantidad,fecha,hora) VALUES ('" + usu + "','0','23/05/1984','14:00:00') ";
					BASE.getBaseDatos().ejecutar(SQL);
				}while(RCS.sigItem());
				*/
			}
			if(this.getProspecto().getTipo().equalsIgnoreCase("corporativo") )
			   SQL = " Select U.usuario,U.email,U.descripcion from apli_cola_prospectos A,usuarios U where A.usuario=U.usuario order by fecha ASC,hora ASC  ";
			else
			   SQL = " Select U.usuario,U.email,U.descripcion from apli_cola_prospectos_pyme A,usuarios U where A.usuario=U.usuario order by fecha ASC,hora ASC  ";
			
			RCS = BASE.getBaseDatos().consultar(SQL);
			if(RCS.RP){
				String usux;
				usux = RCS.getCadena("usuario");
				MPARA=RCS.getCadena("email");
				Fecha  F = new Fecha();
				GESTIONADO_POR = "DEBE SER ASIGNADO POR : " + RCS.getCadena("descripcion");
				
				if(this.getProspecto().getTipo().equalsIgnoreCase("corporativo") )
				   SQL = " Update apli_cola_prospectos SET cantidad=cantidad+1,fecha='" + F.getFecha()+ "',hora='" + F.getHora() + "'  where usuario='" +usux+ "' ";
				else
				   SQL = " Update apli_cola_prospectos_pyme SET cantidad=cantidad+1,fecha='" + F.getFecha()+ "',hora='" + F.getHora() + "'  where usuario='" +usux+ "' ";
				
				BASE.getBaseDatos().ejecutar(SQL);
				SQL = "UPDATE prospectos set prop='" + usux + "',email='"+prospecto.getEmail() +"' where codigo='" + codigo + "'";
				BASE.getBaseDatos().ejecutar(SQL);  			
			}		
		}
		
		//*********************************ENVIAR CORREO REGISTRO PROSPECTO ****************************************************************//
		if(!prospecto.getTipo().toLowerCase().equals("evento") ){
	        MSG_EM = "Se ha registrado un nuevo prospecto "+prospecto.getTipo().toUpperCase()+" <br/>\n";
			MSG_EM = MSG_EM + "Prospecto registrado por aplicacion (SIA - WEB )<br/> \n";
			MSG_EM = MSG_EM + "Usuario registro: " + USUARIO.getDescripcion() + " <br/> \n";
			if(asigno == false)
			   MSG_EM = MSG_EM + "Debe ser asignado por: " + GESTIONADO_POR + " <br/> \n";
			else
			   MSG_EM = MSG_EM + "Asignado automaticamente a: " + ASIGNADO_A + " <br/> \n";
			MSG_EM = MSG_EM + "Razon social: " + prospecto.getNombres()+" - " + prospecto.getApellidos() + " <br/>\n"; 
			MSG_EM = MSG_EM + "Telefonos: " + prospecto.getTel_oficina() + "/" + prospecto.getTelefono()  + "/" + prospecto.getCelular() +" <br/>\n";
			MSG_EM = MSG_EM + "Email: " + prospecto.getEmail() + " <br/>\n";
			MSG_EM = MSG_EM + "Solicita servicio internet : " + prospecto.getSrvSolicitado().getServ_i() + " " + SrvSolVelInter + " <br/>\n";
			if(this.getProspecto().getTipo().equalsIgnoreCase("corporativo") ){
				MSG_EM = MSG_EM + "Solicita servicio datos: " + prospecto.getSrvSolicitado().getServ_d() + " " + SrvSolVelDatos + " <br/>\n";
			}else{
				MSG_EM = MSG_EM + "Solicita dispositivo: " + prospecto.getSrvSolicitado().getDispositivo() + " <br/>\n";	
			}	
			MSG_EM = MSG_EM + "Presupuesto: " + prospecto.getPresupuesto() + " <br/>\n";
			MSG_EM = MSG_EM + "Observaciones: " + prospecto.getSrvSolicitado().getObservaciones() + " <br/>\n";
			SQL=" INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + DES_REQ+MPARA + "','NUEVO PROSPECTO " + prospecto.getTipo().toUpperCase() + " REGISTRADO','" + MSG_EM + "' ) ";
			BASE.getBaseDatos().ejecutar(SQL);
		}	
	    //*************************************FIN DE ENVIO DE CORREO*********************************************************//
	
		 errores.setMsgok("OK");
		 errores.setMsg("Prospecto registrado, se ha enviado la notificacion respectiva para ser procesado");
		 if(asigno){
				dia= new Fecha().getFecha();
				hora=new Fecha().getHoras();
				SQL="INSERT INTO corp_seguimiento_actividades " +
					"(prospecto,actividad,detalle,obs,usuario,fecha,hora) "+
					"VALUES('"+codigo+"','9','0','ASIGNACION AUTOMATICA (SIA-WEB)','sistema','"+dia+"','"+hora+"' )";
			    BASE.getBaseDatos().ejecutar(SQL); 
		 }   
		BASE.getBaseDatos().cerrarConexion(); 
		return SUCCESS;
	}catch(Exception err_gen){
		  this.addActionError("UD HA INGRESADO DATOS INCORRECTOS :"+  err_gen.toString() );
		  return ERROR; 
    }
 }
	
	
	
@SuppressWarnings("rawtypes")
public void validate(){	
	  try{
		Map session = ActionContext.getContext().getSession();
		Usuario USUARIO = (Usuario)session.get("ses_usuario");
		errores=new RpErrores();
		if(USUARIO == null){
			//errores.setErr25("La sesion del usuario ha caducado");
			//errores.setMsgok("OK");
			errores.setMsgok("ERROR"); 
			errores.setErr25("La sesion del usuario ha caducado");
			this.addActionError ("Error al validar el registro, la sesion ha caducado");
			return;
		}
		if(prospecto.getReferencia().getTipo().equals("-1, -1, -1, -1")  || prospecto.getReferencia().getTipo().equals("") || prospecto.getReferencia().getTipo().equals("-1") ){
			prospecto.getReferencia().setNombres("");
			prospecto.getReferencia().setApellidos("");
			prospecto.getReferencia().setTelefono("");
			prospecto.getReferencia().setCelular("");
			prospecto.getReferencia().setEmail("");
			prospecto.getReferencia().setFnacimiento("");
		}
		BASE= new Conectar();
		if(BASE.getMsg().equals("SI")){
			String DOC_ID=prospecto.getTipo_doc()+prospecto.getIdentificacion();
			SQL="Select codigo,status from prospectos where identificacion='"+DOC_ID+"' ";
			Resultado RCS = BASE.getBaseDatos().consultar(SQL);
			if(RCS.RP){
				if(RCS.getCadena("status").equalsIgnoreCase("EN PROCESO") || RCS.getCadena("status").equalsIgnoreCase("PROCESADO")){
					errores.setMsgok("ERROR"); 
					errores.setErr25("El documento="+DOC_ID+", ya esta registrado para un prospecto en proceso"); 
					this.addActionError("Error al validar el registro");
					BASE.getBaseDatos().cerrarConexion(); 
					return ;
				}
			}
		  BASE.getBaseDatos().cerrarConexion();
		}
	 }catch(Exception err_gen){
		 errores.setMsgok("ERROR"); 
		 errores.setErr25("1. FATAN DATOS EN PARA COMPLETAR EL REGISTRO"); 
		 this.addActionError("Error al validar el registro" );
		 return; 
	 }
}	
		
	
	public Prospecto getProspecto() {
		return prospecto;
	}


	public void setProspecto(Prospecto prospecto) {
		this.prospecto = prospecto;
	}


	public RpErrores getErrores() {
		return errores;
	}


	public void setErrores(RpErrores errores) {
		this.errores = errores;
	}
	
	public void SOP(String S)
	{
		System.out.println(S);
	}
	

	
	
	
}
